#导入一个类
import string
import urllib.request
#导入其中的方法
from urllib.parse import quote

import pymysql
from bs4 import BeautifulSoup

city=input("请输入城市名：")
code={
    '北京': '530',
    '上海': '538',
    '广州': '763',
    '深圳': '765',
    '天津': '531',
    '武汉': '736',
    '西安': '854',
    '成都': '801',
    '沈阳': '599',
    '南京': '635',
    '杭州': '653',
    '苏州': '639',
    '重庆': '551',
    '长沙': '749',
    '厦门': '682',
    '南昌': '691'
}
#限制输入的城市为code中的
city=code[city]

type=input("请输入岗位：")
#加入网址并拼接‘城市’‘岗位’
url="https://sou.zhaopin.com/?jl="+city+"&kw="+type+"&p=1"

#url中的空格需要用%20替代
#允许用中文要用qoute转意

#url=qoute(url,safe=string.printable)
res=urllib.request.urlopen(url)
print(url)
#res.read()读的是byte的网页源代码
#用utf8转为中文
#res其中不包括js

content= res.read().decode()
#print(content)

#通过BeautifulSoup解析页面内容
#解析器lxml
soup=BeautifulSoup(content,"lxml")
#通过类名获取数据
jobitem=soup.select(".joblist-box__item")
#print(jobitem)
#存放数据列表
job_list=[]

#去除空格换行
def nospace(world):
    return world.strip().replace(" ","").replace("\n","")

for job in jobitem:
    #存放招聘信息
    job_dic={}
    #get_text()获取所有文本内容（以字符串列表形式）["java","10k"]
    # getText()获取所有文本内容（以字符串形式）"java10k"
    job_name=job.select(".jobinfo__name")[0].get_text()
    job_sal=job.select(".jobinfo__salary")[0].get_text()
    #去掉空格和换行
    job_sal=job_sal.strip().replace(" ","").replace("\n","")
    #print(job_sal)
    if '天' in job_sal:
        job_sal=int(job_sal.split("-")[0])*30
    elif '千' in job_sal:
        job_sal = int(job_sal.split("千")[0]) * 1000
    elif '万' in job_sal:
        job_sal = float(job_sal.split("万")[0]) * 10000
    else:
        job_sal =5000
    job_salary=str(job_sal)+"元"
    #公司名称
    company_name=job.select(".companyinfo__name")[0].get_text().strip().replace(" ","").replace("\n","")
    #多个信息
    job_msg=job.select(".jobinfo__other-info-item")
    #工作地点
    #取0到1
    job_place=job_msg[0].get_text().strip().replace(" ","").replace("\n","")[0:2]
    #job_place = job_msg[0].get_text().strip().replace(" ", "").replace("\n", "")
    #工作要求
    job_exp=job_msg[1].get_text().strip().replace(" ","").replace("\n","")
    #学历要求
    job_education=job_msg[2].get_text().strip().replace(" ","").replace("\n","")
    #放入字典
    job_dic["job_name"]=job_name
    job_dic["job_sal"] = job_sal
    job_dic["company_name"] = company_name
    job_dic["job_place"] = job_place
    job_dic["job_exp"] = job_exp
    job_dic["job_education"] = job_education
    #print(job_dic)
    job_list.append(job_dic)


#连接数据库
db=pymysql.connect(
    host="localhost",
    user="root",
    password="12345",
    database="crawlerdemo",
    charset="utf8"
)
#获取游标
cursor=db.cursor()
for job in job_list:
    sql="insert into job values(null,'%s','%s','%s','%s','%s','%s')"%(job["job_name"],job["job_sal"],job["company_name"],job["job_place"],job["job_exp"],job["job_education"])
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
        print("插入失败")
#提交暂存区的数据到数据库中
db.commit()
#关闭游标
cursor.close()
#关闭数据库
db.close()





